<?php
/**
 * Модуль обработки редактора WYSIWYG
 * 
 * Класс предназначен для обработки кода, возвращаемого модулем WYSIWYG
 * 
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class Service_Editor {
  
  function __construct() {

  }
  
  /**
   * Оставляет только допустимые теги в коде WYSIWYG
   *
   * @param string $strHTML - исходный код WYSIWYG
   * @return string - преобразованная строка
   */
  public static function parseHTML($strHTML){
    $retText = strip_tags($strHTML, '<b><p><a><span><font><strong><img><p><em><strike><u><sub><sup><ol><ul><li><img><br>');
    $retText = stripslashes(str_replace(array('"', "'"), array('&quot;', "&#039;"), $retText));
    $retText = Service_Editor::returnQuot($retText, 'style');
    $retText = Service_Editor::returnQuot($retText, 'href');
    $retText = Service_Editor::returnQuot($retText, 'alt');
    $retText = Service_Editor::returnQuot($retText, 'src');
    return $retText;
  }
  
  /**
   * Метод возвращает кавычки
   *
   * @param string $text - исходный текст
   * @param string $beforeQuot - текст, идущий до кавычек
   * @return string - строка обработанного текста
   */
  public static function returnQuot($text, $beforeQuot, $offset = NULL){
    $beforeQuotSize = strlen($beforeQuot);
    $retText = '';
    do{
      $pos1 = strpos($text, $beforeQuot . '=&quot;');
      if($pos1 === false)
        break;
      $pos2 = strpos($text, '&quot;', $pos1 + ($beforeQuotSize + 5));
      $retText .= substr($text, 0, $pos1 + ($beforeQuotSize + 1)) . '"' . substr($text, $pos1 + ($beforeQuotSize + 7), $pos2 - ($pos1 + ($beforeQuotSize + 7))) . '"';
      $text = substr($text, $pos2 + 6);
    }while(1);  
    $retText .= $text;
    return $retText;
  }
  
}
?>